package eventos.abrir;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import controlador.ControladorJerarquiaValida;
import controlador.IControladorJerarquia;
import controlador.IObjDelModConRefExternaEntidad;
import eventos.EventoQuitarEntidadExterna;
import eventos.aceptar.EventoAceptarJerarquiaNueva;

import vista.ventanas.VentanaJerarquia;

public class EventoAbrirVentanaJerarquia extends MouseAdapter
{
	private JFrame ventanaPadre;
	private IControladorJerarquia controlador;
	
	public EventoAbrirVentanaJerarquia(JFrame ventanaPadre, IControladorJerarquia controlador) 
	{
		super();
		this.ventanaPadre = ventanaPadre;
		this.controlador = controlador;
	}
	
	public void mouseClicked(MouseEvent e)
	{
		VentanaJerarquia ventana = new VentanaJerarquia(this.ventanaPadre, this.controlador.getEntidadesExitentes());
		
		EventoAceptarJerarquiaNueva eventoAceptar = new EventoAceptarJerarquiaNueva(ventana, controlador);
		ventana.escucharEventosBotonAceptar(eventoAceptar);
		
		agregarEventos(ventana);
		
		ventana.setVisible(true);
	}

	protected void agregarEventos(VentanaJerarquia ventana) 
	{
		ControladorJerarquiaValida controladorDeJerarquia = new ControladorJerarquiaValida(ventana, this.controlador);

		EventoAgregarEntidadExternaLogica eventoAgregar = new EventoAgregarEntidadExternaLogica(ventana, controladorDeJerarquia);
		ventana.escucharEventoAgregarEntidad(eventoAgregar);

		EventoQuitarEntidadExterna eventoQuitar = new EventoQuitarEntidadExterna(ventana);
		ventana.escucharEventoQuitarEntidad(eventoQuitar);
	}
	
	protected JFrame getVentanaPadre() {
		return this.ventanaPadre;
	}

	protected IObjDelModConRefExternaEntidad getControlador() {
		return this.controlador;
	}
}
